#include "table.h"
#include "mergepass.c"

/**
 * 归并排序算法
 * @param {table} *tab
 * @return {void}
*/
void mergeSort(table *tab)
{
    int len;
    table temp;
    len = 1;

    while (len < tab -> length)
    {
        mergepass(tab, &temp, len);
        len = len * 2;
        mergepass(&temp, tab, len);
        len = len * 2;
    }
}

int main(){
    table tab;
    int arr[] = {9, 1, 5, 8, 3, 7, 4, 6, 2};
    
    for(int i = 0; i < 9; i++) {
        tab.r[i + 1].key = arr[i];
    }
    tab.length = 9;

    mergeSort(&tab);

    for(int i = 0; i < 9; i++) {
        printf("%d ", tab.r[i + 1].key);
    }

    return 0;
}